package com.killer.tree;

/**
 * 平衡二叉树
 * @param <T>
 */
public class ALVTree<T extends Comparable> extends BinarySearchTree<T>{

    /**
     * 往树增加节点
     */
    public void add(T data){
        super.add(data);
        //进行自平衡调整
    }

    protected void adjust(){

    }

    /**
     * 左旋  右右以及左右的时候需要左旋
     * @param node 传入最新插入节点的父节点
     */
    protected void leftRotate(TreeNode<T> node){
        //获取其父节点(当要涉及到旋转,证明肯定是左右间度超过了1,因此这个节点肯定有父节点,即插入的节点必定有祖父节点)
        TreeNode<T> parent=node.parent;
        //当出现右右或左右的时候需要左旋
        if (node == parent.leftChild) {
            //针对左右的情况


        }else{
            //针对右右的情况
            //当前节点变成父节点,父节点成了当前节点的左孩子
            node.leftChild=parent;
            node.parent=parent.parent;
            parent.parent=node;
            parent.rightChild=null;
        }
    }

    /**
     * 右旋
     */
    protected void rightRotate(TreeNode<T> node){

    }



}
